﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Net.Http;
using System.Net;
using Ninject;
using Tutorial = Timetable.Site.Host.Tutorial.Tutorial;

namespace Timetable.Site.Controllers.Api
{
    public class TutorialController : BaseApiController<Tutorial>
    {
        /// <summary>
        /// Возвращает список предметов для выбранной группы
        /// </summary>
        /// <param name="facultyId">Идентификатор факультета</param>
        /// <param name="courseId">Идентификатор курса</param>
        /// <param name="groupId">Идентификатор группы</param>
        /// <returns></returns>
        public HttpResponseMessage GetForGroup(int facultyId, int courseId, int groupId)
        {
            return CreateResponse<int, int, int, IEnumerable<Tutorial>>(privateGetForGroup, facultyId, courseId, groupId);
        }

        private IEnumerable<Tutorial> privateGetForGroup(int facultyId, int courseId, int groupId)
        {
            var result = TutorialService.GetAllForGroup(facultyId, courseId, groupId);

            return result;
        }

        /// <summary>
        /// Возвращает список предметов для выбранной специальности
        /// </summary>
        /// <param name="facultyId">Идентификатор факультета</param>
        /// <param name="courseId">Идентификатор курса</param>
        /// <param name="specialityId">Идентификатор специальности</param>
        /// <returns></returns>
        public HttpResponseMessage GetForSpeciality(int facultyId, int courseId, int specialityId)
        {
            return CreateResponse<int, int, int, IEnumerable<Tutorial>>(privateGetForSpeciality, facultyId, courseId, specialityId);
        }


        private IEnumerable<Tutorial> privateGetForSpeciality(int facultyId, int courseId, int specialityId)
        {
            var result = TutorialService.GetAllForSpeciality(facultyId, courseId, specialityId);

            return result;
        }

        /// <summary>
        /// Возвращает список предметов для выбранного курса
        /// </summary>
        /// <param name="facultyId">Идентификатор факультета</param>
        /// <param name="courseId">Идентификатор курса</param>
        /// <returns></returns>
        public HttpResponseMessage GetForCourse(int facultyId, int courseId)
        {
            return CreateResponse<int, int, IEnumerable<Tutorial>>(privateGetForCourse, facultyId, courseId);
        }


        private IEnumerable<Tutorial> privateGetForCourse(int facultyId, int courseId)
        {
            var result = TutorialService.GetAllForCourse(facultyId, courseId);

            return result;
        }
    }
}
